我在尝试简化导入时遇到webpack
TypeError。以下代码可以正常工作。在这里,我导入了一个smartForm
从调用的React高阶组件(HOC)core/components/form/index.js
。
core / components / form / index.js (对进行命名输出smartForm
)
export smartForm from './smart-form';
login-form.jsx (导入和使用smartForm
)
import { smartForm } from 'core/components/form';
class LoginForm extends React.Component {
...
}
export default smartForm(LoginForm);
但是,我想将导入简化为just import { smartForm } from 'core'
。所以,我再出口smart- form
的core/index.js
和进口它core
。请参见下面的代码:
core / index.js (对进行命名导出smartForm
)
export { smartForm } from './components/form';
// export smartForm from './components/form'; <--- Also tried this
login-form.jsx (导入和使用smartForm
)
import { smartForm } from 'core';
class LoginForm extends React.Component {
...
}
export default smartForm(LoginForm); // <--- Runtime exception here
这段代码编译没有任何问题,但是我在行中得到了以下运行时异常export default smartForm(LoginForm);
:
login-form.jsx:83未捕获的TypeError: webpack_require .i(…)不是函数(…)
我想念什么?
PS这是我正在使用的圣经和插件版本:
"babel-core": "^6.18.2",
"babel-preset-es2015-webpack": "^6.4.3",
"babel-preset-react": "^6.16.0",
"babel-preset-stage-1": "^6.16.0",
webpack.config.js
: resolve: {
alias: {
core: path.join(__dirname, 'core'),
},
},
您尝试以与从node_modules
文件夹中的npm包中导入内容相同的方式导入模块的导出内容:import { something } from 'packagename';
。这样做的问题是无法立即使用。在Node.js的文档给出为什么答案:
如果没有以“ /”、“./”或“ ../”开头的文件,则该模块必须是核心模块,或者是从
node_modules
文件夹加载的。
因此,您必须按照Waldo Jeffers 建议进行操作并编写import { smartForm } from './core'
,或者可以配置webpack以便它可以通过创建别名来解决导入路径,而别名是为解决此确切问题而创建的。
如果您尝试从现有的npm包(中node_modules
)中导入某些内容,但是 导入的内容在导出中不存在, 则会出现此错误。在这种情况下,请
确保没有拼写错误, 并且您尝试导入的给定内容确实在该软件包中。如今,将库分成多个npm软件包很流行, 您可能正在尝试从错误的软件包中导入 。
因此,如果您得到这样的信息:
TypeError: __webpack_require__.i(...) is not a function
at /home/user/code/test/index.js:165080:81
at Layer.handle [as handle_request] (/home/user/code/test/index.js:49645:5)
要获取有关应检查哪些导入的更多信息,只需打开由webpack生成的输出文件,然后转到错误堆栈中最上面一行所标记的行(本例中为165080)。您应该看到类似:的信息__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_9_react_router_dom__["match"])
。这告诉我们,中没有match
导出(或存在,但是它不是一个函数)react-router-dom
,因此我们需要检查该导入周围的内容。
我有这个功能: 不知什么原因,我得到以下错误: 我看了这篇文章:https://stackoverflow.com/questions/44176021/nodejs-res-send-is-not-a-function 它看起来像另一只虫子。 我怎样才能修好它?
我试着按照教程angular.io(游览英雄)但不是教程,我试着在一些JSON上提出真正的GET请求。 我的代码如下所示: 为了服务,我只进口一些基本的东西: 其中是TOH中的基本副本,所以: 如何在服务中调用此特定方法:首先,我尝试多种方法,但在调试时,我只尝试控制台。将其记录为: 在控制台中加载页面时,我发现多个错误:第一个错误是: 例外:TypeError:这是一个错误。http。得到(…)
我正在尝试使用APP_初始值设定项从配置文件加载数据。我发现以下错误: “未处理的promise拒绝:this.appInits[i]不是函数;区域:;任务:Promise.then;值:TypeError:this.appInits[i]不是函数” 代码: 我做错了什么有什么帮助吗? 编辑: 亚当的解决方案修正了最初的错误。但现在我看到了一个新的错误: TypeError:无法设置未定义的属性“
我正在重构我的索引文件,该文件在Sequelize中创建我的所有模型,以使用导入,而不是切换到节点v14和Sequelize v6和模块的require。但我被这个奇怪的错误困住了: 下面是发生这种情况的代码块: 错误表明它发生在这一行:
问题内容: 我正在尝试创建一个简单的AJAX请求,该请求从MySQL数据库返回一些数据。这是我的以下功能: …在这里我称之为解析所需的参数: 但是,我的成功回调未运行(因为“成功!”未记录到控制台),并且在控制台中出现错误: 这是什么意思?在成功事件触发$ .ajax内部的匿名函数之前,我已经完成了AJAX请求,但是现在我试图运行一个单独的命名函数(在本例中为回调)。我该怎么办? 问题答案: 这里
我正在创建一个简单的AJAX请求,它从数据库返回一些数据。下面是我的函数: 这就是我称之为它的地方,提供了所需的参数: 但是,回调没有运行,相反,我在控制台中得到一个错误: 为什么?我以前做过AJAX请求,成功事件会触发$.AJAX中的匿名函数,但现在我尝试运行一个单独命名的函数。我该怎么办?