[英]Cypress Gitlab ci/cd cannot use import statement outside a module
嘿,我的 cypress 項目寫在 typescript 中,項目結構如下所示
/tests
/e2e
/cypress
/fixtures
/integration
/plugins
...
package.json
tsconfig.json
我的tsconfig.json
文件
{
"compilerOptions": {
"target": "es6",
"lib": ["es6", "dom"],
"types": ["cypress", "node", "reflect-metadata"],
"module": "commonjs",
"moduleResolution": "node",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"baseUrl": "."
},
"include": ["**/*.ts", "cypress/support/index.js", "plugins/index.js"]
}
我的package.json
文件中沒有"type": "module"
屬性。 每當我使用 gitlab 管道運行我的代碼時,我都會收到以下錯誤
import "dotenv/config";
^^^^^^
SyntaxError: Cannot use import statement outside a module
我知道有很多類似的問題,但我覺得我檢查了所有問題,但沒有找到任何答案。 有誰知道我可以改變什么?
該文件必須是 ES 模塊才能使用導入導出語法。 正如您提到的,您在 package.json 中輸入了 commonjs,它將把 all.ts 文件視為腳本。 要將文件聲明為模塊,您有兩種選擇
Cypress 文檔Types for plugins有點誤導,顯示module.exports = (on, config) => {}
但這會導致編譯器投訴。
cypress-real-world-app 有
import * as dotenv from "dotenv";
dotenv.config({ path: ".env.local" });
dotenv.config();
const awsConfig = require(path.join(__dirname, "../../aws-exports-es5.js"));
export default (on, config) => {
config.env.defaultPassword = process.env.SEED_DEFAULT_USER_PASSWORD;
一般來說,任何有導出的東西都是一個模塊,所以如果你沒有什么可導出的,添加export {}
作為一個快速的技巧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.