尝试按照官方手册实现一个模块,我得到这个错误消息:
Uncaught ReferenceError:未定义exports
在app.js: 2
但在我的代码中,我从未使用过名称exports。
我该如何解决这个问题?
文件
app.ts
let a = 2;
let b:number = 3;
import Person = require ('./mods/module-1');
模块- 1. t
export class Person {
constructor(){
console.log('Person Class');
}
}
export default Person;
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"sourceMap": true,
"outDir": "scripts/"
},
"exclude": [
"node_modules"
]
}
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist",
"sourceMap": true,
"declaration": false,
"module": "esnext",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": ["node_modules/@types"],
"lib": ["es2018", "dom"]
}
}
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist",
"sourceMap": true,
"declaration": false,
"module": "esnext",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": ["node_modules/@types"],
"lib": ["es2018", "dom"]
}
}
注意:这可能不适用于OP的答案,但我得到了这个错误,这就是我解决它的方式。
所以我面临的问题是,当我从一个特定的CDN检索一个'js'库时,我得到了这个错误。
我做的唯一错误的事情是从CDN的cjs目录导入,就像这样:
https://cdn.jsdelivr.net/npm/@popperjs/core@2.4.0/dist/cjs/popper.min.js
注意到dist/cjs部分了吗?这就是问题所在。
在我的例子中,我回到CDN (jsdelivr)并导航到umd文件夹。我可以找到另一组popper.min.js,这是要导入的正确文件:
https://cdn.jsdelivr.net/npm/@popperjs core@2.4.0 / dist / / popper.min.js umd格式。
我有类似的问题,原来的海报的问题:
我最好告诉你我犯了什么错误以及我是如何改正的,这可能会帮助到别人。
我有javascript nodejs项目,并将其转换为typescript。
之前的包装。我有“类型”:“模块”当我在JavaScript运行。
当我把它转换成TypeScript项目,并开始转换.ts文件中的文件,并使用以下命令开始运行:
npx tsc test.ts && node test.ts
我会得到上面的错误。
我通过简单地从package.json中删除“type”:“module”来摆脱这个错误
我的tsconfig。Json格式如下:
{
"compilerOptions": {
"target": "esnext",
"lib": ["es6", "es5", "es7", "dom"],
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "es6",
"outDir": "./build",
"moduleResolution": "node",
"resolveJsonModule": true,
"skipLibCheck": true
},
"exclude": ["node_modules", "build"]
我使用节点14和TypeScript 4.2.4
首先,在你的公共文件夹中找到你的index.html,找到脚本的引用<script src="myScript.js"></script>,并添加type="module"
像这样:
<script type="module" src="myScript.js"></script>
其次,在您的tsconfig中。Json,确保目标设置为es5,模块设置为es2015
"compilerOptions": {
"target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
/* Modules */
"module": "es2015", /* Specify what module code is generated. */
}
注意:确保使用.js扩展名导入,例如import Piece from './classes/ Piece .js'